/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package principal;
import java.util.ArrayList;

/**
 *
 * @author STEPHANY
 */
public class ConstelacionesJugada {

    public static final int BLANCA=0; //Constante de clase para las constelaciones blancas
    public static final int OSCURA=1; //Constante de clase para las constelaciones oscuras
    
    void validarObjetivo(ConstelacionesLogica cl) {
        //throw new UnsupportedOperationException("Not yet implemented");
    }

    public int jugarObjetivo(ConstelacionesLogica logica, ArrayList<Integer> estrellasTemporales) {
        boolean limpiar=false;
        if(logica.estado.turno == BLANCA && logica.estado.objetivoB[0]!=-1){
            System.out.println("Objetivo blanco :" + logica.estado.objetivoB[0] +" "+logica.estado.objetivoB[1]);
            System.out.println("Punto cercano obj : " + logica.estado.puntoCercanoObjB[0] + " " + logica.estado.puntoCercanoObjB[1]);
            if(logica.estado.puntoCercanoObjB[0]==logica.estado.segmentos[0].x1 &&  logica.estado.puntoCercanoObjB[1]==logica.estado.segmentos[0].y1 ){
                //System.out.println("entramos");
                int pfx=logica.estado.puntoCercanoObjB[0]+(int)(75*((logica.estado.objetivoB[0]-logica.estado.puntoCercanoObjB[0])/logica.distancia(logica.estado.puntoCercanoObjB[0],logica.estado.puntoCercanoObjB[1],logica.estado.objetivoB[0],logica.estado.objetivoB[1])));
                int pfy=logica.estado.puntoCercanoObjB[1]+(int)(75*((logica.estado.objetivoB[1]-logica.estado.puntoCercanoObjB[1])/logica.distancia(logica.estado.puntoCercanoObjB[0],logica.estado.puntoCercanoObjB[1],logica.estado.objetivoB[0],logica.estado.objetivoB[1])));
                if(logica.distancia(logica.estado.puntoCercanoObjB[0], logica.estado.puntoCercanoObjB[1], logica.estado.objetivoB[0], logica.estado.objetivoB[1])<=75){
                    limpiar=true;                
                }   
                logica.insertarArista(pfx, pfy,logica.estado.puntoCercanoObjB[0],logica.estado.puntoCercanoObjB[1], logica.estado.turno, 0, estrellasTemporales);
                logica.estado.puntoCercanoObjB[0]=pfx;
                logica.estado.puntoCercanoObjB[1]=pfy;
            }
            else{
                if(logica.distancia(logica.estado.puntoCercanoObjB[0], logica.estado.puntoCercanoObjB[1], logica.estado.objetivoB[0], logica.estado.objetivoB[1])<=75){
                    limpiar=true;                
                }
                logica.insertarArista(logica.estado.puntoCercanoObjB[0], logica.estado.puntoCercanoObjB[1], logica.estado.objetivoB[0], logica.estado.objetivoB[1], logica.estado.turno, 1, estrellasTemporales);
                int pfox=logica.estado.puntoCercanoObjB[0]+(int)(75*((logica.estado.objetivoB[0]-logica.estado.puntoCercanoObjB[0])/logica.distancia(logica.estado.puntoCercanoObjB[0],logica.estado.puntoCercanoObjB[1],logica.estado.objetivoB[0],logica.estado.objetivoB[1])));
                int pfoy=logica.estado.puntoCercanoObjB[1]+(int)(75*((logica.estado.objetivoB[1]-logica.estado.puntoCercanoObjB[1])/logica.distancia(logica.estado.puntoCercanoObjB[0],logica.estado.puntoCercanoObjB[1],logica.estado.objetivoB[0],logica.estado.objetivoB[1])));
                logica.estado.puntoCercanoObjB[0]=pfox;
                logica.estado.puntoCercanoObjB[1]=pfoy;
            }
            if(limpiar){
                logica.estado.objetivoB[0]=-1;
                logica.estado.objetivoB[1]=-1;
                limpiar=false;
            }
            logica.estado.turno=OSCURA;
            //turno=OSCURA;
            
            return OSCURA;
        }
        if(logica.estado.turno == OSCURA && logica.estado.objetivoO[0]!=-1){
            System.out.println("Objetivo oscuro");
            if(logica.estado.puntoCercanoObjO[0]==logica.estado.segmentos[1].x1 &&  logica.estado.puntoCercanoObjO[1]==logica.estado.segmentos[1].y1 ){
                int pfx=logica.estado.puntoCercanoObjO[0]+(int)(75*((logica.estado.objetivoO[0]-logica.estado.puntoCercanoObjO[0])/logica.distancia(logica.estado.puntoCercanoObjO[0],logica.estado.puntoCercanoObjO[1],logica.estado.objetivoO[0],logica.estado.objetivoO[1])));
                int pfy=logica.estado.puntoCercanoObjO[1]+(int)(75*((logica.estado.objetivoO[1]-logica.estado.puntoCercanoObjO[1])/logica.distancia(logica.estado.puntoCercanoObjO[0],logica.estado.puntoCercanoObjO[1],logica.estado.objetivoO[0],logica.estado.objetivoO[1])));
                if(logica.distancia(logica.estado.puntoCercanoObjO[0], logica.estado.puntoCercanoObjO[1], logica.estado.objetivoO[0], logica.estado.objetivoO[1])<=75){
                    limpiar=true;               
                }               
                logica.insertarArista(pfx, pfy,logica.estado.puntoCercanoObjO[0],logica.estado.puntoCercanoObjO[1], logica.estado.turno, 0, estrellasTemporales);
                logica.estado.puntoCercanoObjO[0]=pfx;
                logica.estado.puntoCercanoObjO[1]=pfy;
            }            
            else{
                if(logica.distancia(logica.estado.puntoCercanoObjO[0], logica.estado.puntoCercanoObjO[1], logica.estado.objetivoO[0], logica.estado.objetivoO[1])<=75){
                    limpiar=true;               
                }
                logica.insertarArista(logica.estado.puntoCercanoObjO[0], logica.estado.puntoCercanoObjO[1], logica.estado.objetivoO[0], logica.estado.objetivoO[1], logica.estado.turno, 1, estrellasTemporales);
                int pfox=logica.estado.puntoCercanoObjO[0]+(int)(75*((logica.estado.objetivoO[0]-logica.estado.puntoCercanoObjO[0])/logica.distancia(logica.estado.puntoCercanoObjO[0],logica.estado.puntoCercanoObjO[1],logica.estado.objetivoO[0],logica.estado.objetivoO[1])));
                int pfoy=logica.estado.puntoCercanoObjO[1]+(int)(75*((logica.estado.objetivoO[1]-logica.estado.puntoCercanoObjO[1])/logica.distancia(logica.estado.puntoCercanoObjO[0],logica.estado.puntoCercanoObjO[1],logica.estado.objetivoO[0],logica.estado.objetivoO[1])));
                logica.estado.puntoCercanoObjB[0]=pfox;
                logica.estado.puntoCercanoObjB[1]=pfoy;
            }  
            
            if(limpiar){
                logica.estado.objetivoO[0]=-1;
                logica.estado.objetivoO[1]=-1; 
                limpiar=false;
            }
            
            logica.estado.turno=BLANCA;
            return BLANCA;
        }
        return -1;
    }
    
}
